www.gusucode.com > matlab神经网络原理与实例精解 本书源文件 > 第13章 神经网络应用实例/基于自组织特征映射网络的亚洲足球水平聚类/football.m

    % football.m
% 亚洲足球水平聚类

%% 清空工作空间
clear,clc
close all;

rng(now)
M=4;
%% 定义输入样本
N = 16;
strr = {'中国','日本','韩国','伊朗','沙特','伊拉克','卡塔尔','阿联酋','乌兹别克','泰国',...
    '越南','阿曼','巴林','朝鲜','印尼','澳大利亚'};
data = [43,43,9,9;        % 中国
    28,9,4,1;               % 日本
    17,15,3,3;              % 韩国
    25,33,5,5;              % 伊朗
    28,33,2,9;              % 沙特
    43,43,1,5;              % 伊拉克
    43,33,9,5;              % 卡塔尔
    43,33,9,9;              % 阿联酋 
    33,33,5,4;              % 乌兹别克 
    43,43,9,17;             % 泰国 
    43,43,5,17;             % 越南
    43,43,9,17;             % 阿曼
    33,33,9,9;              % 巴林
    33,32,17,9;             % 朝鲜
    43,43,9,17;             % 印尼
    16,21,5,2]';            % 澳大利亚

%% 创建网络
% 2*2 自组织映射网络
net = selforgmap([2,2]);

%% 网络训练
data = mapminmax(data);
tic
net = init(net);
net = train(net, data([1,2,3,4],:));
toc

%% 测试
y = net(data([1,2,3,4],:));

% 将向量表示的类别转为标量
result = vec2ind(y);

%% 输出结果
% 将分类标签按实力排序
score = zeros(1,M);
for i=1:M
    t = data(:, result==i);
    score(i) = mean(t(:));
end
[~,ind] = sort(score);

result_ = zeros(1,N);
for i=1:M
    result_(result == ind(i)) = i; 
end

fprintf('  足球队            实力水平\n');
for i = 1:N
    fprintf('   %-8s      第 %d 流\n', strr{i}, result_(i)) ;
end